import router from './router'
import store from './store'
import getPageTitle from '@/utils/get-page-title'
import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style

NProgress.configure({ showSpinner: false }) // NProgress Configuration
// 白名单
// const whiteList = [
//   '/dc/admin/login',
//   '/dc/admin/setting',
//   '/base/home',
//   '/404',
//   // 示例界面
//   '/demo/list',
//   '/demo/info',
//   '/demo/tree',
//   '/demo/report',
//   '/demo/board'
//   // 业务界面
// ]

// 路由器前置过滤器，权限处理
router.beforeEach(
  async(to, from, next) => {
  // 进度条开始
    NProgress.start()
    // 获取并修改页面标题
    document.title = getPageTitle(to.meta.title)
    // 获取token
    const token = store.getters['user/getToken']

    if (token) {
      /* 如果存在token */
      // 如果前往登录页
      if (to.path === '/dc/admin/login') {
        // 修改为前往首页
        next({ path: '/' })
        NProgress.done()
      } else {
        const userName = store.getters['user/getUserName']
        if (userName) {
          next()
        } else {
          try {
            next()
          } catch (error) {
            Message.error(error || 'Has Error')
            next(`/dc/admin/login?redirect=${to.path}`)
            NProgress.done()
          }
        }
      }
    } else {
      /* 没有token信息 */
      // ===== ===== ===== =====  测试模式下，不做权限处理  ===== ===== ===== =====
      next()
      /*
      if (whiteList.indexOf(to.path) !== -1) {
        // 如果访问白名单信息，允许访问
        next()
      } else {
        // 如果访问非白名单信息，跳转到登录页面。原地址作为redirect参数
        next(`/dc/admin/login?redirect=${to.path}`)
        NProgress.done()
      }
      */
    }
  }
)

// 路由器后置过滤器
router.afterEach(() => {
  // 进度条结束
  NProgress.done()
})
